﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SWBetongXaydung.GUI.Common;
using SWBetongXaydung.BLL;
using SWBetongXaydung.DAL;
using SWBetongXaydung.Utils;
using SWBetongXaydung.GUI.Utils;
namespace SWBetongXaydung.GUI.DuLieu
{
    public partial class UCTaiXe : BaseUserControl
    {
        bool isAdd = true;
        public UCTaiXe()
        {
            InitializeComponent();
            InitGrid();
            InitButton();
        }
        void InitButton()
        {
            btnHieuChinh.Enabled = btnXoa.Enabled = false;
            btnThem.Enabled = true;
            btnBoQua.Visible = false;
            btnLuu.Enabled = false;
            dgTaiXe.Enabled = true;
            txtHoTen.Enabled = txtTen.Enabled = false;
            chkDangLamViec.Enabled = false;
            btnThem.Focus();
            LoadGrid();
        }

        void InitGrid()
        {
            dgTaiXe.AutoGenerateColumns = false;
            colHoDem.DataPropertyName = "HoDem";
            colTen.DataPropertyName = "Ten";
            colConLamViec.DataPropertyName = "DangLamViec";
        }
        void LoadGrid()
        {
            bdTaiXe.DataSource = TaiXeBLL.GetList();
            dgTaiXe.DataSource = bdTaiXe;
        }

        private void bdXe_CurrentChanged(object sender, EventArgs e)
        {
            var current = bdTaiXe.Current as TaiXe;
            if (current != null)
            {
                btnHieuChinh.Enabled = btnXoa.Enabled = true;
                txtHoTen.Text = current.HoDem;
                txtTen.Text = current.Ten;
                chkDangLamViec.Checked = current.DangLamViec;
            }
            else
                btnHieuChinh.Enabled = btnXoa.Enabled = false;
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            isAdd = true;
            chkDangLamViec.Enabled = false;
            chkDangLamViec.Checked = true;
            InitWhenAddOrEditPress();
            txtHoTen.Text = "";
            txtTen.Text = "";
        }

        void InitWhenAddOrEditPress()
        {
            btnThem.Enabled = btnHieuChinh.Enabled = btnXoa.Enabled = false;
            btnLuu.Enabled = btnBoQua.Visible = true;
            txtHoTen.Enabled = txtTen.Enabled = true;
            dgTaiXe.Enabled = false;
            txtHoTen.Focus();
        }

        private void btnHieuChinh_Click(object sender, EventArgs e)
        {
            isAdd = false;
            chkDangLamViec.Enabled = true;
            InitWhenAddOrEditPress();
        }

        bool ValidateData()
        {
            errorNotify.Clear();
            if (txtHoTen.Text.IsNullOrEmpty())
            {
                errorNotify.SetError(txtHoTen, "Bạn chưa nhập họ");
                txtHoTen.Focus();
                return false;
            }
            if (txtTen.Text.IsNullOrEmpty())
            {
                errorNotify.SetError(txtTen, "Bạn chưa nhập tên");
                txtTen.Focus();
                return false;
            }
            return true;
        }

        private void btnLuu_Click(object sender, EventArgs e)
        {
            bool isSuccess = false;
            if (ValidateData())
            {
                if (isAdd)
                {
                    //Thêm
                    TaiXe taiXe = new TaiXe();
                    taiXe.HoDem = txtHoTen.Text;
                    taiXe.Ten = txtTen.Text;
                    var rs = TaiXeBLL.Add(taiXe);
                    if (rs == CODE_RESULT_RETURN.ThatBai)
                    {
                        isSuccess = false;
                        DialogUtils.ShowError("Thêm mới thất bại");
                        return;
                    }
                    else
                    {
                        isSuccess = true;
                    }
                }
                else
                {
                    //Cập nhật
                    var current = bdTaiXe.Current as TaiXe;
                    if (current != null)
                    {
                        var taiXe = new TaiXe();
                        taiXe.IDTaiXe = current.IDTaiXe;
                        taiXe.HoDem = txtHoTen.Text;
                        taiXe.Ten = txtTen.Text;
                        taiXe.DangLamViec = chkDangLamViec.Checked;
                        var rs = TaiXeBLL.Update(taiXe);
                        if (rs == CODE_RESULT_RETURN.ThatBai)
                        {
                            isSuccess = false;
                            DialogUtils.ShowError("Cập nhật thất bại");
                            return;
                        }
                        else
                        {
                            isSuccess = true;
                        }
                    }
                }
                if (isSuccess)
                    InitButton();
            }
        }

        private void btnBoQua_Click(object sender, EventArgs e)
        {
            InitButton();
        }

        private void dgTaiXe_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
        {

        }

        private void txtTen_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)Keys.Enter)
            {
                btnLuu.PerformClick();
            }
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            var current = bdTaiXe.Current as TaiXe;
            if (current != null)
            {
                if (DialogUtils.ShowYesNo("Bạn có chắc muốn xóa") == DialogResult.Yes)
                {
                    var rs = TaiXeBLL.Delete(current.IDTaiXe);
                    if (rs == CODE_RESULT_RETURN.ThatBai)
                        DialogUtils.ShowError("Không thể xóa");
                    else
                    {
                        InitButton();
                    }
                }
            }
            else
                btnXoa.Enabled = false;
        }
    }
}
